Initialization of spatial average of soil balance variables
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | fileini | |||
character(len=*), | intent(in) | :: | pathout | |||
type(grid_real), | intent(in) | :: | sm |
mean soil moisture (m3/m3) |
||
type(grid_real), | intent(in) | :: | smrz |
root zone soil moisture (m3/m3) |
||
type(grid_real), | intent(in) | :: | smtz |
transmission moisture (m3/m3) |
||
type(grid_real), | intent(in) | :: | runoff |
runoff rate (m/s) |
||
type(grid_real), | intent(in) | :: | infrate |
infiltration rate (m/s) |
||
type(grid_real), | intent(in) | :: | perc |
percolation (m/s) |
||
type(grid_real), | intent(in) | :: | et |
actual evapotranspiration rate (m/s) |
||
type(grid_real), | intent(in) | :: | pet |
potential evapotranspiration rate (m/s) |
||
type(grid_real), | intent(in) | :: | caprise |
actual evapotranspiration rate (m/s) |
||
type(grid_real), | intent(in) | :: | error |
balance error (mm) |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(IniList), | public | :: | iniDB |
SUBROUTINE InitSpatialAverageBalance & ! (fileini, pathout, sm, smrz, smtz, runoff, infrate, perc, et, pet, & caprise, error) IMPLICIT NONE !arguments with intent in: CHARACTER(LEN = *), INTENT(IN) :: fileini CHARACTER(LEN = *), INTENT(IN) :: pathout TYPE (grid_real), INTENT(IN) :: sm !!mean soil moisture (m3/m3) TYPE (grid_real), INTENT(IN) :: smrz !!root zone soil moisture (m3/m3) TYPE (grid_real), INTENT(IN) :: smtz !!transmission moisture (m3/m3) TYPE (grid_real), INTENT(IN) :: runoff !!runoff rate (m/s) TYPE (grid_real), INTENT(IN) :: infrate !!infiltration rate (m/s) TYPE (grid_real), INTENT(IN) :: perc !!percolation (m/s) TYPE (grid_real), INTENT(IN) :: et !!actual evapotranspiration rate (m/s) TYPE (grid_real), INTENT(IN) :: pet !!potential evapotranspiration rate (m/s) TYPE (grid_real), INTENT(IN) :: caprise !!actual evapotranspiration rate (m/s) TYPE (grid_real), INTENT(IN) :: error !! balance error (mm) !local declarations TYPE(IniList) :: iniDB !-------------------------------end of declaration----------------------------- ! open and read configuration file CALL IniOpen (fileini, iniDB) ! search for active variable for output CALL Catch ('info', 'SpatialAverage', 'checking for balance active variables ') countbalance = 0 !mean soil volumetric water content IF ( IniReadInt ('soil-moisture', iniDB, section = 'soil-balance') == 1) THEN IF ( .NOT. ALLOCATED (sm % mat) ) THEN CALL Catch ('warning', 'SpatialAverage', 'soil mositure not allocated, & forced to not export spatial average ') balanceout (1) = .FALSE. ELSE balanceout (1) = .TRUE. countbalance = countbalance + 1 END IF ELSE balanceout (1) = .FALSE. END IF !root zone volumetric water content IF ( IniReadInt ('soil-moisture-rz', iniDB, section = 'soil-balance') == 1) THEN IF ( .NOT. ALLOCATED (smrz % mat) ) THEN CALL Catch ('warning', 'SpatialAverage', 'soil mositure rz not allocated, & forced to not export spatial average ') balanceout (2) = .FALSE. ELSE balanceout (2) = .TRUE. countbalance = countbalance + 1 END IF ELSE balanceout (2) = .FALSE. END IF !transmission zone volumetric water content IF ( IniReadInt ('soil-moisture-tz', iniDB, section = 'soil-balance') == 1) THEN IF ( .NOT. ALLOCATED (smtz % mat) ) THEN CALL Catch ('warning', 'SpatialAverage', 'soil mositure tz not allocated, & forced to not export spatial average ') balanceout (3) = .FALSE. ELSE balanceout (3) = .TRUE. countbalance = countbalance + 1 END IF ELSE balanceout (3) = .FALSE. END IF !runoff IF ( IniReadInt ('runoff', iniDB, section = 'soil-balance') == 1) THEN IF ( .NOT. ALLOCATED (runoff % mat) ) THEN CALL Catch ('warning', 'SpatialAverage', 'runoff not allocated, & forced to not export spatial average ') balanceout (4) = .FALSE. ELSE balanceout (4) = .TRUE. countbalance = countbalance + 1 END IF ELSE balanceout (4) = .FALSE. END IF !infiltration IF ( IniReadInt ('infiltration', iniDB, section = 'soil-balance') == 1) THEN IF ( .NOT. ALLOCATED (infrate % mat) ) THEN CALL Catch ('warning', 'SpatialAverage', 'infiltration not allocated, & forced to not export spatial average ') balanceout (5) = .FALSE. ELSE balanceout (5) = .TRUE. countbalance = countbalance + 1 END IF ELSE balanceout (5) = .FALSE. END IF !percolation IF ( IniReadInt ('percolation', iniDB, section = 'soil-balance') == 1) THEN IF ( .NOT. ALLOCATED (perc % mat) ) THEN CALL Catch ('warning', 'SpatialAverage', 'percolation not allocated, & forced to not export spatial average ') balanceout (6) = .FALSE. ELSE balanceout (6) = .TRUE. countbalance = countbalance + 1 END IF ELSE balanceout (6) = .FALSE. END IF !actual evapotranspiration IF ( IniReadInt ('actual-ET', iniDB, section = 'soil-balance') == 1) THEN IF ( .NOT. ALLOCATED (et % mat) ) THEN CALL Catch ('warning', 'SpatialAverage', 'et not allocated, & forced to not export spatial average ') balanceout (7) = .FALSE. ELSE balanceout (7) = .TRUE. countbalance = countbalance + 1 END IF ELSE balanceout (7) = .FALSE. END IF !potential evapotranspiration IF ( IniReadInt ('potential-ET', iniDB, section = 'soil-balance') == 1) THEN IF ( .NOT. ALLOCATED (pet % mat) ) THEN CALL Catch ('warning', 'SpatialAverage', 'pet not allocated, & forced to not export spatial average ') balanceout (8) = .FALSE. ELSE balanceout (8) = .TRUE. countbalance = countbalance + 1 END IF ELSE balanceout (8) = .FALSE. END IF !capillary rise IF ( IniReadInt ('capillary-rise', iniDB, section = 'soil-balance') == 1) THEN IF ( .NOT. ALLOCATED (caprise % mat) ) THEN CALL Catch ('warning', 'SpatialAverage', 'capillary rise not allocated, & forced to not export spatial average ') balanceout (9) = .FALSE. ELSE balanceout (9) = .TRUE. countbalance = countbalance + 1 END IF ELSE balanceout (9) = .FALSE. END IF !balance error IF ( IniReadInt ('error', iniDB, section = 'soil-balance') == 1) THEN IF ( .NOT. ALLOCATED (error % mat) ) THEN CALL Catch ('warning', 'SpatialAverage', 'balance error not allocated, & forced to not export spatial average ') balanceout (10) = .FALSE. ELSE balanceout (10) = .TRUE. countbalance = countbalance + 1 END IF ELSE balanceout (10) = .FALSE. END IF balanceInitialized = .TRUE. CALL IniClose (iniDB) CALL ConfigureExtents (fileini, pathout) RETURN END SUBROUTINE InitSpatialAverageBalance